##网络参数调优
#通过调整tcp相关的缓存，减少零窗及TCP重传次数，保证压力充足
#表示socket监听（listen）的backlog上限
echo 65535 > /proc/sys/net/core/somaxconn
#表示套接字写默认缓冲区
echo 8388608 > /proc/sys/net/core/wmem_default
#表示套接字写最大缓冲区
echo 16777216 > /proc/sys/net/core/wmem_max
#表示套接字读默认缓冲区
echo 8388608 > /proc/sys/net/core/rmem_default
#表示套接字读最大缓冲区
echo 16777216 > /proc/sys/net/core/rmem_max
#表示最多有多少个TCP套接字不被关联到任何一个文件句柄上
echo 3276800 > /proc/sys/net/ipv4/tcp_max_orphans
#表示每个网络接口接受数据包的速率比内核处理这些报速率快时，允许送到队列的数据包的最大数目
echo 262144 > /proc/sys/net/core/netdev_max_backlog
#记录的那些尚未收到客户端确认信息的链接请求最大值
echo 262144 >  /proc/sys/net/ipv4/tcp_max_syn_backlog
#时间戳可以必变序列号的卷绕，一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种异常的数据包，可将其关闭
echo 0 >  /proc/sys/net/ipv4/tcp_timestamps
#表示socket预留用于接受缓冲的最小内存，默认内存，最大内存
echo "4096 87380 16777216"> /proc/sys/net/ipv4/tcp_rmem
#表示socket预留用于发送缓冲的最小内存，默认内存，最大内存
echo "4096 65536 16777216"> /proc/sys/net/ipv4/tcp_wmem
echo 360000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
#该参数标识是否启用选择性确认sacks选项
echo 1 > /proc/sys/net/ipv4/tcp_sack
#设置tcp/ip会哦话的窗口大小是否可变，为1时表示可变
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
#为了打开对端的连接，内核需要发送一个SYN，并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃链接之前发送SYN+ACK包的数量
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
#在内核放弃建立链接之前发送SYN包的数量
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
#如果套接字由本端要求关闭，这个参数决定了她保持在fin-wait-2状态的时间 。
echo 15 > /proc/sys/net/ipv4/tcp_fin_timeout
#当keepalive启用的时候，TCP发送keepalive消息的额度，缺省时为2
echo 15 > /proc/sys/net/ipv4/tcp_keepalive_time
#------------------------------------------------------------------------------------------------------#


##OS参数调优
#DN节点IO存在瓶颈，提升IO调度队列，提升IO性能
echo 1023 > /sys/block/${device}/queue/nr_requests #增大IO调度队列大


#1. 禁用selinux
#减少无用的SELINUX相关函数调度，减少性能影响
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
#2. 设置大吞吐量模式(默认就是，无变化)
tuned-adm profile throughput-performance
#------------------------------------------------------------------------------------------------------#

##文件调优
#系统中所允许的最大句柄数目
echo 204800 >  /proc/sys/fs/file-max
echo mq-deadline >  /sys/block/$device/queue/scheduler
echo STEAL > /sys/kernel/debug/sched_features
#6. 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag


#------------------------------------------------------------------------------------------------------#
##网卡调优
#1. 增大缓冲区配置
ethtool -G $net0  rx 7168 tx 7168
ethtool -G $net1  rx 7168 tx 7168


##减少中断聚合
#减少中断聚合，保证新到的网络包可以及时处理，以增加软中断的代价减少网络时延
ethtool -C $net0 adaptive-rx off adaptive-tx off rx-usecs 0 rx-frames 0 tx-usecs 0 tx-frames 0
ethtool -C $net1 adaptive-rx off adaptive-tx off rx-usecs 0 rx-frames 0 tx-usecs 0 tx-frames 0

#网卡中断绑核
#关闭中断均衡
systemctl stop irqbalance.service
systemctl disable irqbalance.service
#改变网卡通道数

ethtool -L $net0 combined 48
ethtool -L $net1 combined 48

#------------------------------------------------------------------------------------------------------#
##关闭nf_conntrack
echo -e "install nf_conntrack /bin/false\nblacklist nf_conntrack\nblacklist nf_conntrack_ipv6\nblacklist xt_conntrack\nblacklist nf_conntrack_ftp\nblacklist xt_state\n
blacklist iptable_nat\nblacklist ipt_REDIRECT\nblacklist nf_nat\nblacklist nf_conntrack_ipv4" > /etc/modprobe.d/blacklist.conf

#------------------------------------------------------------------------------------------------------#
##修改grub参数
#grub 添加参数 nohz=on audit=0 sched_steal_node_limit=4 scsi_mod.use_blk_mq=y
#
echo -e "GRUB_TIMEOUT=5\nGRUB_DISTRIBUTOR=\"\$(sed 's, release .*$,,g' /etc/system-release)\"\nGRUB_DEFAULT=saved\nGRUB_DISABLE_SUBMENU=true\nGRUB_TERMINAL_OUTPUT=\"console\"\nGRUB_CMDLINE_LINUX=\"crashkernel=1024M,high rd.lvm.lv=klas/root rd.lvm.lv=klas/swap video=efifb:off biosdevname=0 net.ifnames=0 rhgb quiet  smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15 video=efifb:off video=VGA-1:640x480-32@60me console=tty0 console=ttyS0,115200n8i nvme_core.multipath=N  nohz=on audit=0 sched_steal_node_limit=4 scsi_mod.use_blk_mq=y\"\nGRUB_DISABLE_RECOVERY="true"" >/etc/default/grub

##编译优化项
-Ofast -flto -march=armv8.2-a+crc+sve -mcpu=tsv110 -ftree-slp-vectorize -ftree-vectorize
-O2 -flto=N  -march=armv8-a+lse+crc

module use /share/home/fang/hpcrunner-master/software/modulefiles/
module load bisheng/3.1.0 kml-bisheng/2.1.0

-Ofast -L/share/home/fang/hpcrunner-master/software/utils/kml-bisheng/2.1.0/lib/kvml/single/ -lkvml -L /share/home/fang/hpcrunner-master/software/utils/kml-bisheng/2.1.0/lib/ -lkm -lm -ljemalloc -mrecip=vec-sqrt:0 

